/**
 * 字符串 + int/long/float/...
 * 导入示例: #include "../Utils/StringFormatUtils.h"
 */
#ifndef __STRING_FORMAT_UTILS__
#define __STRING_FORMAT_UTILS__
#include <stdio.h>
#include <stdarg.h>

/**
 * 返回格式化后的字符串, 或者自己直接调用函数: sprintf()
 * @param Dest 将结果输出到数组: char Dest[] (经测试,指针不行...)
 * @param Format 格式化, 例: %d%c%d=\n
 * @param ... 格式化数据, 例: 2, '+', 5
 * @return 如果成功，则返回写入的字符总数，否则返回一个负数
 */
int stringFormat(char Dest[], char *Format, ...) {
//    int len = sprintf(buf, format, ...);
    /**
     * typedef char* va_list; 是一个地址指针，用来指向形参的地址
     * va: variable-argument(可变参数)
     */
    va_list args;
    //初始化 va_list, 参2: 根据这个参数寻找下一个可变参数的地址(∵参数地址指针是固定大小&连续的)
    va_start(args, Format);
    /**
     * @param _Dest: 将格式化后的字符串写入到 _Dest
     * @return 如果成功，则返回写入的字符总数，否则返回一个负数
     */
    int len = vsprintf(Dest, Format, args);
    va_end(args);
    return len;
}
#endif